package cn.yang.domain.activity.service.quota.rule;

/**
 * @version v1.0
 * @ClassName: cn.yang.domain.activity.service.rule
 * @Description: 下单规则责任链抽奖类
 *
 * 将核心逻辑固定下来，子类只需要专心写action方法即可，next与appendNext方法可以进行复用
 *
     * 实现责任链模式的核心逻辑复用。
     * 强制子类去实现必要的业务逻辑。
     * 保证责任链节点类型的安全性。
     * 提升代码的可维护性和可扩展性。
 *
 * 模板方法模式的实现：
 *    实现了链管理的核心逻辑，同时把业务处理逻辑（action()方法）留给子类去实现。
 *    松耦合：具体的处理器只需要关注自身的业务逻辑，不用关心链的结构。
 *    能够在运行时动态地组合责任链
 * 电商系统中，一个促销活动的校验流程可能需要依次经过：
     * 活动基础信息校验（ActivityBaseActionChain）
     * 库存校验（InventoryCheckActionChain）
     * 价格计算（PriceCalculateActionChain）
     * 优惠券校验（CouponCheckActionChain）
 *
 * 遵循设计原则：
     * 开闭原则：对扩展开放，对修改关闭。
     * 单一职责原则：链管理和业务处理的职责分开。
     * 里氏替换原则：可以用子类对象替换父类对象。
 * @Author: YJ
 */
public abstract class AbstractActionChain implements IActionChain {
    private IActionChain next;

    @Override
    public IActionChain next() {
        return next;
    }

    @Override
    public IActionChain appendNext(IActionChain next) {
        this.next = next;
        return next;
    }
}
